package 面试经典150题.二叉树;

import common.TreeNode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/**
 * @author tmh
 * @date 2024/6/11 21:05
 * @description
 */
public class T637二叉树的层平均值 {

    public List<Double> averageOfLevels(TreeNode root) {
        List<Double> resultList=new ArrayList<>();
        if(root==null){
            return resultList;
        }
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()){
            int len = queue.size();
            List<Integer> list =new ArrayList<>();
            while (len>0){
                TreeNode tempNode = queue.poll();
                list.add(tempNode.val);
                if(tempNode.left!=null){
                    queue.offer(tempNode.left);
                }
                if(tempNode.right!=null){
                    queue.offer(tempNode.right);
                }
                len--;
            }
            //mapToInt(Integer::intValue).average().getAsDouble 对于list集合求平均值的方法
            resultList.add(list.stream().mapToInt(Integer::intValue).average().getAsDouble());
        }
        return resultList;
    }
}
